package org.dome.websocket.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.socket.server.standard.ServerEndpointExporter;
import org.springframework.web.socket.server.standard.ServletServerContainerFactoryBean;

/**
 * WebSocket配置类。
 * 用于配置WebSocket的相关设置，包括endpoint的注册和WebSocket容器的配置。
 */
@Configuration
public class WebSocketConfig {

    /**
     * 注册ServerEndpointExporter bean，以便Spring Boot自动扫描并注册使用@ServerEndpoint注解的WebSocket端点。
     * @return ServerEndpointExporter实例，用于WebSocket端点的注册。
     */
    @Bean
    public ServerEndpointExporter serverEndpointExporter() {
        return new ServerEndpointExporter();
    }

    /**
     * 配置WebSocket容器，设置最大文本消息和二进制消息的缓冲区大小，以及最大会话空闲超时时间。
     * 这样可以调整WebSocket处理大消息的能力和会话的保持活跃时间。
     * @return ServletServerContainerFactoryBean实例，配置了WebSocket容器的属性。
     */
    @Bean
    public ServletServerContainerFactoryBean createWebSocketContainer() {
        ServletServerContainerFactoryBean container = new ServletServerContainerFactoryBean();
        container.setMaxTextMessageBufferSize(10240000);
        container.setMaxBinaryMessageBufferSize(10240000);
        container.setMaxSessionIdleTimeout(15 * 60000L);
        return container;
    }
}


